# 【dict】班级同学的成绩
classmatesDict = {'Michael': 95, 'Bob': 85, 'Tracy': 75}
print(classmatesDict)
# 获取Michael的成绩
print(classmatesDict['Michael'])

# 字典添加新的同学的成绩
classmatesDict['Jack'] = 80
print(classmatesDict)

# 判断字典的某个key是否存在
print('Michael' in classmatesDict)
print('Michael2' in classmatesDict)

# 二是通过dict提供的get()方法，如果key不存在，可以返回None，或者自己指定的value：
print(classmatesDict.get('Michael'))
print(classmatesDict.get('Michael2', -1))

print('*' . join(['-' for i in range(20)]))
# 【set】
# set 和 dict 类似，也是一组key的集合，但是不存储value. 由于key不能重复，所以，在set中，没有重复的key
classmatesSet = {'Michael', 'Bob', 'Tracy'}
print(classmatesSet)

print('*' . join(['-' for i in range(20)]))
# list 作为输入的集合
list1 = [1,2,3,3,4,5,5] # 重复元素会被set删除，因为set不能有重复的元素
set1 = set(list1)
print(set1) # 输出：{1, 2, 3, 4, 5}

print('*' .join(['~' for i in range(20)]))

# 通过add(key)方法，可以添加元素到set中
set1.add(10086)
print(set1)


print('*' .join(['~' for i in range(20)]))
# 通过remove(key)方法可以删除元素：
set1.remove(10086)
print(set1)



print('*' .join(['~' for i in range(20)]))
# set 可以运算：交集和并集
# set可以看成数学意义上的无序和无重复元素的集合，因此，两个set可以做数学意义上的交集、并集等操作：
s1 = [1,2,3]
s2 = [2,3,4]
print(set(s1) & set(s2)) # 交集 输出：{2, 3}
print(set(s1) | set(s2)) # 并集 输出：{1, 2, 3, 4}


print('*' .join(['~' for i in range(20)]))